/**
 * Copyright (c) 2016 Lenovo Group
 * All Rights Reserved.
 * 
 * Project Name:lmrp-api
 * Create Time: 2016年1月25日 下午3:36:24
 */
package com.lenovo.lmrp.api.assigntrace;

import java.util.List;

import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.QueryParam;

import com.lenovo.lmrp.api.model.RestResponse;
import com.lenovo.lmrp.api.model.view.AppVO;

/**
 * @author songyz
 *
 */
public interface IAppManager {

	/**
	 * Get the App recently 10 times publishing history 获取App最近10次的发布历史记录
	 * 
	 * @param name
	 *            appname
	 * @return
	 */
	@GET
	@Path("/app/{name}/versions")
	public RestResponse<List<AppVO>> getAppListRecently(@PathParam("name") String name);

	/**
	 * Get The App's latest releases 获取App最新发布版本
	 * 
	 * @param name
	 *            appname
	 * @return
	 */
	@GET
	@Path("/app/{name}/versions/last")
	public RestResponse<AppVO> getLatestVersionApp(@PathParam("name") String name);

	/**
	 * Add the latest version of the App 添加最新版本
	 * 
	 * @param name
	 *            appName
	 * @param fileurl
	 *            包路径
	 * @param version
	 *            版本
	 * @return
	 */
	@POST
	@Path("/app/{name}/versions")
	public void addLastestVersionApp(@PathParam("name") String name,
									 @QueryParam("fileurl") String fileurl, 
									 @QueryParam("version") String version);

	/**
	 * Release the latest version of the App 发布App最新版本
	 * 检查version是否是最新版本，且是否未发布，若未发布则发布版本通知app进行升级
	 * 
	 * @param name
	 *            appName
	 * @param version
	 *            版本
	 * @return
	 */
	@PUT
	@Path("/app/{name}/versions/{version}")
	public void releaseLastestVersionApp(@PathParam("name") String name,
										 @PathParam("version") String version);

}
